/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package main.KBProcess;

import java.io.Serializable;
import java.util.List;
import main.NER.Trie.ContextTrie.ORIENTATION;

/**
 *
 * @author Isaac Osesina
 */
public interface KnowledgeBaseDocument extends Serializable, Cloneable{

    KnowledgeBaseDocument clone();

    int countStringOccurence(String string, ORIENTATION orientation);

    int getDocID();

    String getDocLanguage();

    String getDocText();

    StringBuilder getDocTextTagged_AfterFragment(Element element);

    StringBuilder getDocTextTagged_BeforeFragment(Element element);

    String getDocType();

    Element getElement(int i);

    int getElementCnt();

    List<Element> getElements();

    List<Element> getElementsAfterFragment(Element element);

    List<Element> getElementsBeforeFragment(Element element);

    List<Element> getEntities();

    int getEntityCnt();

    Element getFirstElement();

    List<Fragment> getFragmentList();

    /**
     * Returns text contained in document
     * @param docID: id of document
     * @return
     */
    StringBuilder getKBDocTextTagged();

    /**
     * Returns text contained in given KB elements
     * @param elements
     * @return
     */
    StringBuilder getKBDocTextTagged(List<Element> elements);
    
    void addElement(Element element);

    Element getLastElement();

    Fragment getLastFragment();

    void setDocContext(String docContext);

    void setDocText(String docText);

    void setEntityCnt(int entityCnt);
    
}
